Conversation
+ Use async-detached routine on image loading + Add PNG version of poster for GetPlaceholderBackgroundImageFrom + Add default placeholder image on MainPage + Add ParallaxResetOnUnfocused property on LayeredBackgroundImage
+ Fix a gradual memory leaks on both GPU and General memory due to ComMarshalling operation. + Make MediaPlayer.CopyFrameToVideoSurface able to run outside of UI thread (this reduces call overhead on UI threads significantly) + Implement context menu (right-click menu) for background image and selector pills at the top of the launcher UI. + Remove test project and codes
+ Add feature to copy current image to clipboard, directly from frame buffer (also works for Video)
There are 3 options you can choose:
- Copy foreground (overlay) layer only
- Copy background layer only
- Copy and combine both layers (if available)
+ Add feature to seek video position
+ Move PanelSlideshow's Countdown Timer to different thread
+ Fix crash due to "DeviceLost" COM Exception during sleep or when active monitor is disabled
+ Remove shadow support for elements temporarily
This is temporary until I found a solution for the shadow GPU usage problem.
+ Move several code to LayeredbackgroundImage element
+ Fix bloated memory allocation due to excessive use of IRandomAccessStream to load images
+ Make elevation and background blur work while switching pages
+ Make background integration for Plugin-based Games working (can be tested for HBR, Wuwa and DNA)
+ Make custom background usable for Plugin-based Games working
+ Fix hover trigger on Multi-background pips area
+ Localize context menu flyout for background
100% reviewed source file: 'en_US.json' on 'es_419'.
Now the object will be returned using TCS to ensure the DispatcherQueue's Impl is executed and thus returns the object
Due to the size of the thumbnail being too small, the palette generator can't get enough color.
100% reviewed source file: 'en_US.json' on 'es_419'.
This also fixes an issue where the element might cause a hard-crash due to race condition on GC.
This is a requirement for commit 0a9a62d
Also adds fallback to Safe-mode renderer for video frames if it failed to use the fast-unsafe renderer
* [UX] Put game file cleanup button to navigation bar As FileCleanupPage is not really a "page" rather an overlay, we manually invoke the overlay the same way as the QS invokes them and force the NavigationViewControl to select the last item/page back so the UI literally says "nothing happened here" i havent slept all night because my dumbass brain so help me * Add trycatch on filescleanup navigator * Avoid sending error to Sentry twice note to self: SendException already send the exception data to Sentry yes, i'm the one who made it do that in the first place
# Main Goal Enhance Sentry breadcrumbs data in aid for troubleshooting New fields: ### 1. Plugin Info List all imported plugins with its version and the standard version (pluginVersion-standardVersion) ### 2. App Configuration Displays some configuration data used by Collapse ``` AppThread: httpDownload, extractionCpu DownloadPreallocated: bool ExternalDNS: bool HttpCache: bool HttpOpts: Redirect//Cookie//Insecure Proxy: cl//+sys SophonThread: httpDownload,extractionCpu Waifu2x: bool ``` <img width="1272" height="479" alt="image" src="https://github.com/user-attachments/assets/126f22d9-75e4-40f2-9fb4-2dc72bf54002" /> ## PR Status : - Overall Status : Done - Commits : Done - Synced to base (Collapse:main) : Yes - Build status : OK - Crashing : No - Bug found caused by PR : 0 ### Templates <details> <summary>Changelog Prefixes</summary> ``` **[New]** **[Imp]** **[Fix]** **[Loc]** **[Doc]** ``` </details>
+ Add media codec support detection + Fix COM Object cast and release
100% reviewed source file: 'en_US.json' on 'zh_CN'.
100% reviewed source file: 'en_US.json' on 'es_419'.
| MemoryStream ffmpegFrameExtracted = new(); | ||
| IRandomAccessStream ffmpegFrameStream = ffmpegFrameExtracted.AsRandomAccessStream(); | ||
| await ffmpegFrame.EncodeAsBmpAsync(ffmpegFrameStream); | ||
|
|
||
| await ffmpegFrameStream.FlushAsync(); |
This comment was marked as outdated.
This comment was marked as outdated.
Sorry, something went wrong.
100% reviewed source file: 'en_US.json' on 'zh_CN'.
| static void LoadExport(nint handle, string name, out nint exportPtr) | ||
| { | ||
| if (!NativeLibrary.TryGetExport(handle, name, out exportPtr)) | ||
| { | ||
| throw new | ||
| EntryPointNotFoundException($"Cannot find {AddBytesOrWaitAsyncExportName} export from library!"); | ||
| } | ||
| } |
This comment was marked as outdated.
This comment was marked as outdated.
Sorry, something went wrong.
| using Process? process = Process.Start(new ProcessStartInfo | ||
| { | ||
| FileName = path, | ||
| Arguments = $"\"{packageFolder}\"", | ||
| WorkingDirectory = Path.GetDirectoryName(path), | ||
| UseShellExecute = true | ||
| }); | ||
|
|
||
| await process!.WaitForExitAsync(); |
This comment was marked as outdated.
This comment was marked as outdated.
Sorry, something went wrong.
|
🚧 Skipped: PR exceeds review size limit. Please split into smaller PRs and re-run. |
|
Sentry bill goes brrrr THANK YOU SENTRY 💜💜 |
|
🚧 Skipped: PR exceeds review size limit. Please split into smaller PRs and re-run. |
|
animated background is not working on Zenless Zone Zero (All Regions) |
We are aware of this. This should be fixed after you enabled FFmpeg as video decoder via App Settings. This will be a default option. Still working on it. |
+ Add function to detect existing FFmpeg installation from environment variables
+ Also few binding issues on notification, download settings and status on discord presence
|
🚧 Skipped: PR exceeds review size limit. Please split into smaller PRs and re-run. |
|
🚧 Skipped: PR exceeds review size limit. Please split into smaller PRs and re-run. |
100% reviewed source file: 'en_US.json' on 'es_419'.
|
🚧 Skipped: PR exceeds review size limit. Please split into smaller PRs and re-run. |
100% reviewed source file: 'en_US.json' on 'zh_CN'.
|
🚧 Skipped: PR exceeds review size limit. Please split into smaller PRs and re-run. |
Preview 1.84.1 (Codename: Columbina)
Hewwo, it's neon-nyan here~
It's beeeeeen a while since the last 1.83.x update. For now, this release is focusing on more quality improvements, bug fixes and internal code reworks rather than new features as we are preparing on reworking Collapse for new codebase.
That being said, this 1.84 update will be the marked as the last V1 release after roughly 4 years since the start of this project as we are going to move into V2 codebase starting this year (at Q3 or Q4 2026). Thank you so much for your continous support and interest in this project💖
Without further ado, let's dig into what's new in this release so far.
What's new?
Reworked Background System
Since months, HoYoverse has updated HoYoPlay to support multiple background to display, including static image and dynamic background ones. This has been our backlog since this release as due to "spaghetti-code" nature of our entire codebase, this made us harder to adapt the changes and thus making Collapse still only support one static background image.
Thanks to this massive rework, we are now able to pull-off this feature by splitting the parts of the code into its own element, making it more easier and more manageable for the change and for incoming improvements.
We are also moving to FFmpeg as our secondary library for background video decoder if no built-in codec is present. You will be prompted to install the FFmpeg library if none of the required built-in Windows Media Foundation codec for VP9 or any codec is present.
2026-03-22.20-02-46.webm
The experience might still be sluggish due to rushed implementation. But this will be improved in future updates🤞
Update: 2026/03/27
Due to corrupted video background situation in any regions for Zenless Zone Zero game, FFmpeg has been set as a default decoder for Collapse Launcher now (You can opt-in for using built-in Windows Media Foundation decoder, though). You might be asked to install a new one if you don't have any defined in your system's Environment Variable.
2026-03-27.11-55-13.webm
Reworked Localization System #861
This is more like development-experience improvement rather than user focused ones. Previously in order to implement the localization for new elements, we have to manually map each class properties to represented JSON entries. Thanks to newly source-generated class mapper, every JSON entries will be mapped automatically. Each class properties can now be bind into UI element directly, making the UI able to update the visual itself rather than being told manually, one-by-one (which is expensive).
Reworked Download Speed Limiter #859
The feature has been long broken since last 1.83.x release due to inconsistency and changes to other download-related libraries. Even though if you're enabling this feature, you might experience that the download speed "isn't actually being limited" and noticing that your bandwidth is still being fully utilized. This feature should now be fully fixed by decentralizing the code of the feature into its own library and making it easier to maintain.
This feature could also be applied for any game plugins whose have v1-update4 API standard fully implemented.
Minor UI Adjustments
Not so noticeable UI changes at all. But it's worth to mention here.
1. News Carousel Design
2. About Card
Other New Changes
PR Status :
[Regression][High Priority] Game Config's API is not changed while changing the games (Assignee: @neon-nyan)Fixed as per 052cb94Templates
Changelog Prefixes